import { body } from "express-validator";
import { User } from "../../models/index.js";
import validate from "./errorBack.js";

export const registerValidator = validate([
  body("username")
    .isLength({ min: 2, max: 10 })
    .withMessage("用户名长度在2-10位之间")
    .bail(),
  body("password")
    .isLength({ min: 6, max: 18 })
    .withMessage("密码长度在6-18位之间")
    .bail(),
  body("phone")
    .isMobilePhone()
    .withMessage("手机号码格式不正确")
    .bail()
    .custom(async (value) => {
      const user = await User.findOne({ phone: value });
      if (user) {
        return Promise.reject("此手机号已被注册");
      }
    })
    .bail(),
]);

export const loginValidator = validate([
  body("phone").isMobilePhone().withMessage("手机号码格式不正确").bail(),
  // .custom(async (value) => {
  //   const user = await User.findOne({ phone: value });
  //   if (!user) {
  //     return Promise.reject("此手机号未注册");
  //   }
  // })
  // .bail(),
  body("password")
    .isLength({ min: 6, max: 18 })
    .withMessage("密码长度在6-18位之间")
    .bail(),
]);
export const updateValidator = validate([
  body("username")
    .isLength({ min: 2, max: 10 })
    .withMessage("用户名长度在2-10位之间")
    .bail()
    .custom(async (value) => {
      const user = await User.findOne({ username: value });
      if (user) {
        return Promise.reject("用户名已存在");
      }
    }),
]);
